﻿using System;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Security.Cryptography;
using BUS;

namespace QuanLyHocSinh.GUI
{
    public partial class F_DangNhap : DevExpress.XtraEditors.XtraUserControl
    {
        public F_DangNhap()
        {
            InitializeComponent();
        }

        F_TrangChu home;

        static string GetMd5Hash(MD5 md5Hash, string input)
        {
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            return sBuilder.ToString();
        }

        static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
        {
            string hashOfInput = GetMd5Hash(md5Hash, input);

            StringComparer comparer = StringComparer.OrdinalIgnoreCase;

            if (0 == comparer.Compare(hashOfInput, hash))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void btnDangNhap_Click(object sender, EventArgs e)
        {
            DangNhap();
        }

        private void DangNhap()
        {
            try
            {
                home = this.ParentForm as F_TrangChu;
                GlobalVariable.nguoidung = BUSDangNhap.ThongTinNguoiDung(txtTaiKhoan.Text);

                if (GlobalVariable.nguoidung == null)
                {
                    XtraMessageBox.Show("Tên Tài Khoản Không Tồn Tại!","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    return;    
                }
                else if (GlobalVariable.nguoidung.TrangThai == false)
                {
                    XtraMessageBox.Show("Tài Khoản Này Đang Bị Khóa! Vui Lòng Liên Hệ Ban Giám Hiệu!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                using (MD5 md5Hash = MD5.Create())
                {
                    if (VerifyMd5Hash(md5Hash, txtMatKhau.Text, GlobalVariable.nguoidung.Password))
                    {
                        XtraMessageBox.Show("Đăng Nhập Thành Công!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                        home.XTabTrangChu.TabPages.Remove((DevExpress.XtraTab.XtraTabPage)this.Parent);
                        if (GlobalVariable.nguoidung.VaiTro == "GIÁO VỤ")
                        {
                            home.rbQuanLyDiem.Visible = true;
                            home.rbQuanLyHocSinh.Visible = true;
                            home.rbQuanLyKhoiLopLopMonHoc.Visible = true;    
                        }
                        else if(GlobalVariable.nguoidung.VaiTro == "BAN GIÁM HIỆU")
                        {
                            home.rbQuanLyChung.Visible = true;
                            home.rbQuanLyDiem.Visible = true;
                            home.rbQuanLyHocSinh.Visible = true;
                            home.rbQuanLyKhoiLopLopMonHoc.Visible = true;
                            home.rbThongKe.Visible = true;
                        }
                        home.rbThongKe.Visible = true;
                        home.barbtnDangNhap.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                        home.barbtnDangXuat.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                        home.barbtnDoiMatKhau.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                        home.lbCHUCDANH.Text += GlobalVariable.nguoidung.VaiTro + " : " + GlobalVariable.nguoidung.UserName;                   
                    }
                    else
                    {
                        XtraMessageBox.Show("Mật Khẩu Không Đúng! Nếu Không Nhớ Mật Khẩu Vui Lòng Liên Hệ Ban Giám Hiệu Để Reset!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
        }
    }
}
